Linux
Linux 文件系统
Linux目录结构
- /bin (Binary):存放计算机能直接运行的常用的二进制命令
- /sbin:存放系统管理原命令,普通用户通常没有执行权限
- /etc:存放所有的系统配置文件
- /root:系统管理员的家目录
- /home:普通用户的家目录
- /opt(Optional):可选软件安装目录,通常用于安装第三方大型软件,放安装包的
- /usr/local:给主机额外安装软件的目标目录,放实际软件的,一般是通过编译源码的方式安装的程序
- /tmp:临时文件目录,系统重启或定期会清理
- /var:存放经常变化的文件,/usr目录通常是只读的,系统运行需要很多长度变化的文件,该目录最重要的是/var/log 系统日志
- /dev(device):设备文件目录,所有的硬件设备被抽象为文件,Linux“一切皆文件”,类似于设备管理器
- /proc(process):虚拟目录,是系统内存的映射,访问这个目录来获取系统信息
- /sys(system):系统内核相关
- /srv(service):系统内核相关
- /media:Linux自动识别设备,当识别后,Linux会把识别的设备挂载到该目录下
- /mnt(mount):临时挂载目录,手动挂载
- /lib:动态连接库,作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
- /lost+found:一般是空的,存放在系统崩溃、非正常关机或磁盘故障后,被修复程序找回但“无家可归”的文件碎片
- /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /selinux(security-enhanced linux):是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式,可以自行设置
文件颜色
- 白色/黑色:普通文件
- 蓝色:目录
- 浅蓝色:软链接
- 绿色:可执行文件,如
.sh脚本或二进制程序 - 红色:压缩包或归档文件
- 黄色:设备文件,通常出现在/dev目录下
- 紫色:图片、视频或图形文件
- 红色背景:受损的链接(如果一个软链接指向的文件被删除了,它的名字通常会显示为红底白字或闪烁)
- 黄色背景:管道文件
- 绿色背景:全开放目录,权限为777且带有粘滞位(非文件所有者或root不能删除该文件)的目录,如/tmp,通常为绿底黑字
远程登录Linux
- XShell介绍
- XShell是目前最好的远程登录到Linux系统的软件,流畅的速度并且完美解决了中文乱码的问题
- XShell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNET协议
- XShell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的
- Xftp介绍
- 是一个基于 Windows 平台的强大的SFTP、FTP文件传输文件
- 一般生产环境将服务器配置成静态IP
配置静态IP
- 到
/etc/sysconfig/network-scripts/,修改ifcfg-ens33[具体文件看自己的虚拟网卡是哪个]该文件
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="cc535551-4caa-4bef-9498-6f138559d326"
DEVICE="ens33"
ONBOOT="yes"
IPADDR=192.168.134.128
NETMASK=255.255.255.0
GATEWAY=192.168.134.2
DNS1=114.114.114.114
DNS2=8.8.8.8将BOOTPROTO[引导协议]值设置为 static ,添加手动配置的IPADDR[静态IP地址]、NETMASK[子网掩码]、GATEWAY[网关]、DNS服务器等配置
重启网络服务:
sudo systemctl restart network查看IP地址是否正确
ip addr测试DNS服务是否正常
ping www.baidu.com测试网关
ping 192.168.134.2
用户管理
基本用户管理
基本介绍:Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
添加用户:
- 基本语法:
useradd [用户名] - 细节说明:创建用户成功后,会自动的创建和用户同名的Home目录,也可以通过
useradd -d [指定目录] [新的用户名],给新创建的用户指定Home目录
- 基本语法:
指定/修改密码:
- 基本语法:
passwd [用户名] - 细节说明:如果不指定用户名就会修改当前用户的密码,一定要指定用户名!
- 基本语法:
删除用户
- 基本语法:
userdel [用户名] - 删除用户及家目录:
userdel -r [用户名] - 细节说明:有两种删法,一种是只删除用户,保留家目录;另一种是用户和家目录都删除。一般情况下,建议保留家目录
- 基本语法:
查询用户信息
- 基本语法:
id [用户名] - 细节说明:当用户不存在时,返回无此用户
- 基本语法:
切换用户
- 基本语法:
su - [用户名] - 细节说明:
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要;当需要切换回原来的用户时,使用exit/logout命令
- 关于
-是否省略的问题,强烈不建议省略该符号。-的作用是:在切换用户的同时,初始化该用户的环境变量
- 基本语法:
查看当前登录用户的信息
- 基本语法:
whoami / who am i - 细节说明:
who am i显示的是第一次登录该系统的用户,whoami显示的是当前的使用的用户
- 基本语法:
用户组管理
- 基本介绍:类似于角色,系统可以对有共性的多个用户进行统一管理
- 新增组
- 基本语法:
groupadd [组名]
- 基本语法:
- 删除组
- 基本语法:
groupdel [组名]
- 基本语法:
- 增加用户时直接加上组
- 基本语法:
useradd -g [用户组] [用户名] - 细节说明:如果在创建用户时没有指定组,则会创建一个和用户名同名的组,并将用户加入该组
- 基本语法:
- 修改用户所在组
- 基本语法:
usermod -g [用户组] [用户名](modify)
- 基本语法:
用户和组相关文件
/etc/passwd 文件
- 用户(user)的配置文件,记录用户的各种信息
- 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

/etc/shadow 文件
存放加密后的口令(密码)
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

/etc/group 文件
组(group)的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表

运行级别
介绍:运行级别决定了系统启动后处于什么状态,开启哪些服务
传统的7个运行级别:
级别 名称 功能描述 0 Halt 关机 1 Single-user 单用户模式,只有root权限,不加载网络,常用于找回密码 2 Multi-user 多用户模式,无网络 3 Full Multi-user 完全多用户模式,命令行模式,有网络 4 Unused 保留 5 X11 图形界面模式 6 Reboot 重启 常用的运行级别是3(多用户模式,有网络,但节省资源)和5(GUI)
运行级别命令
- 切换运行级别:
init [运行级别] - 查看当前运行级别:
runlevel - 查看默认运行级别:
systemctl get-default - 改变默认运行级别:
systemctl set-default [.target]- 注意:CentOS 7之前,运行级别的文件在 /etc/inittab 中,CentOS 7之后,运行级别的文件变为
multi-user.target(级别3),graphical.target(级别5)
- 注意:CentOS 7之前,运行级别的文件在 /etc/inittab 中,CentOS 7之后,运行级别的文件变为
- 切换运行级别:
重置root密码
- 进入之前按 e 进入编辑模式
- 在Linux行尾加上
init=/bin/sh,按Ctrl + x执行,进入单用户模式(提示系统这次启动不要按照正常流程运行init进程,拿到一个简单的sh(命令窗口)) - 输入
mount -o remount,rw /(重新挂载根目录,并赋予读写权限) - 输入
passwd,之后输入两次密码 - 接着输入
touch /.autorelabel(在根目录下创建一个名为.autorelabel)的隐藏文件,应对SELinux的安全机制,防止因为修改/etc/shadow文件后,安全标签发生变化而被禁止登录 - 最后输入
exec /sbin/init,等待即可(结束当前的sh进程,正式加载系统的各个服务)
Linux 组管理和权限管理
组管理
基本介绍:在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux文件中,有所有者、所在组、其他组的概念。
文件/目录的所有者
查看文件/目录的所有者:
ls -ahl,各列分别为:权限、子目录数量(包括隐藏文件)、所有者、所属组、大小、最后修改时间、文件/目录名
改变文件的所有者:
chown 用户名 文件名(change owner) , 加上-R会对目录的所有子目录和字文件生效同时改变文件的所有者和所在组:
chown newowner:newgroup 文件/目录
文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
查看文件/目录所在组:
ls -ahl同上修改文件所在组:
chgrp 组名 文件名,加上-R会对目录的所有子目录和字文件生效
其他组:除文件所有者和所在组的用户之外,系统的其他用户都是文件的其他组
改变用户所在组
usermod -g [组名] [用户名]改变用户所在组usermod -d [目录名] [用户名]改变用户登录的 初始目录,该用户需要有目录的访问权限
权限管理
基本介绍
drwxr-xr-x共有10位,0-9位说明:第0位确定文件类型(d - l c b)
l是软链接,相当于windows的快捷方式d是目录,相当于windows的文件夹c是字符设备文件,串行端口设备,如鼠标,键盘,终端。按字符读取b是块设备,存储数据的硬件,比如硬盘。按块读取-是普通文件第1-3位是文件所有者对该文件拥有的权限
第4-6位是文件所属组对该文件拥有的权限
第7-9位是文件其他组对该文件拥有的权限
权限介绍
权限 缩写 数字 对文件 (File) 的意义 对目录 (Directory) 的意义 读 r4 可以读取/查看文件内容 可以 ls查看目录下的文件名写 w2 可以修改/保存文件内容 可以在目录内新建/删除/重命名文件 执行 x1 可以作为程序或脚本运行 可以 cd进入该目录,或访问其子项
权限使用的数字和为2的整数次幂,如 0b111 代表拥有 rwx 权限,分别为2的0次幂 1,2的1次幂 2,2的2次幂 4
chmod(change mode)修改权限几种方式第一种方式:+ - = 变更权限
u :所有者
g:所有组
o:其他人
a:所有人(u,g,o的总和)
案例演示
给abc文件的所有者读写执行的权限,给所在组读执行的权限,给其他组读执行的权限:
chmod u=rwx,g=rx,o=rx abc给abc文件的所有者除去执行的权限,增加组写的权限:
chmod u-x,g+w abc给abc文件的所有用户添加读的权限:
chmod a+r abc给abc文件的其他用户添加读写执行的权限:
chmod o+r+w+x abc
第二种方式:通过数字变更权限,当变更权限较多时可以采用此方式
- r = 4
- w = 2
- x = 1
- 语法:
chmod 数字 文件/目录,因为取值为2的整数次幂,所以不会数字不会有歧义 - 案例演示
- 将abc文件权限修改为 rwxr-xr-x :
chmod 755 abc
- 将abc文件权限修改为 rwxr-xr-x :
定时任务调度
crond 任务调度(重复执行)
概述
- 任务调度:是指系统在某个时执行的特定的命令或程序
- 任务调度分类
- 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如MySQL数据库备份
- 本质:系统中运行着一个名为
crond的守护进程(Daemon),它每分钟会检查一次/var/spool/cron/用户名下的任务文件,crontab -e命令修改的正是这个文件
基本语法:
crontab [选项](Cron(源自希腊语 Chronos 时间) Table)常用选项
- -e(edit):编辑crontab定时任务,一个用户会编辑一个文件
- -l(list):查询crontab定时任务
- -r(remove):删除当前用户的所有的crontab任务
- service crond restart :重启任务调度
定时任务的格式
* * * * * command_to_execute(任务可以是shell脚本,也可以是普通的命令) - - - - - | | | | | | | | | +----- 星期几 (0 - 7) (0和7都代表星期天) | | | +------- 月份 (1 - 12) | | +--------- 每月的几号 (1 - 31) | +----------- 小时 (0 - 23) +------------- 分钟 (0 - 59) 分时日月周常用符号:
- *(星号):代表每。如在分钟位写
*就是每分钟执行任务 - ,(逗号):代表和。如在星期位写
1,3,5代表每周一三五执行任务 - -(横杠):代表范围。如在月位写
1-2代表每年的1到2月 - /(斜杠):代表间隔,一般和
*连用*/n代表每隔多久。如在小时位写*/8代表每隔八小时
注意:阅读时最好从后往前看;周和日最好不要同时定义,因为它们定义的都是天,很容易引起混乱,如果周和日都同时定义了,那么两者之间是或的关系,如
0 8 1,15 * 1代表每周一和1号、15号的上午八点执行任务- *(星号):代表每。如在分钟位写
案例
- 每隔1分钟,就将当前的日期信息,追加到
/home/ethan/mydate文件中:* * * * * cal >> /home/ethan/mydate - 每天凌晨2:00将mysql数据库 testdb,备份到文件中:
0 2 * * * mysqldump -u root -p密码 testdb > /home/db.bak
- 每隔1分钟,就将当前的日期信息,追加到
at任务调度(一次性)
- 基本介绍
- at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
- 默认情况下,atd守护进程会每60秒检查作业队列,有作业时,会检查作业的运行时间,如果时间与当前时间匹配,则运行此作业
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用at命令时,一定要保证atd进程的启动,可以使用相关指令(ps -ef | grep atd)来查看
- 基本语法:
at [选项] [时间],交互模式下Ctrl + D 结束at命令的输入,Ctrl + backspace 退格 - 常用选项
- -l(list):列出当前用户排队中的任务,等同于atq
- -d(delete):删除指定的任务,等同于atrm
- -c(cat):查看任务内容
- -m(mail):当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
- -f(file):从文件读取任务,不需要进入交互式界面
- -q(queue):指定队列,at默认将任务放入a队列,可以使用不同字母(a-z,A-Z)来区分任务等级,字母越小,优先级越高,batch命令默认在b队列
- -t:使用特定格式的时间戳指定任务的执行时间,一般配合date命令来使用。格式
[[CC]YY]MMDDhhmm[.ss] - -v(vaguely):显示出任务将要执行的具体时间
- -V(version):显示版本信息
- at指定时间的方法
- 接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已经过去,那么就在第二天执行。例如:04:00
- 使用midnight(凌晨零点),noon(中午12点),teatime(下午4点)等比较模糊的词语来指定时间
- 采用12小时制,在时间后面加上AM(上午),PM(下午)。如12pm
- 指定具体日期,格式为
- MM/DD/YY:
at 10:00 01/25/26 - MM/DD/YYYY:
at 10:00 01/25/2026 - DD.MM.YY:
at 10:00 25.01.26 时间 月份 日期 [年份]:at 08:30 Jan 25 2026,月份简写:Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec均可识别。
- MM/DD/YY:
- 相对计时法,语法为
now/具体时间 + count 时间单位,时间单位有minutes、hours、days、months、weeks。如now + 5 days - 使用 today tomorrow,如
04:00 tomorrow
- 案例
- 2天后的下午5点执行 /bin/ls /home :
at 5pm + 2 days - 明天下午五点,输出时间到指定文件内:
at 5pm tomorrow - 2分钟后,执行指定脚本文件:
at now + 2 minutes -f /home/ethan/myshell.sh - 删除已经设置的任务:
atrm 编号
- 2天后的下午5点执行 /bin/ls /home :